package com.fowo.api.model.amazon.financial.event.group;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 亚马逊结算中心-交易汇总 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class AmazonFinancialEventGroupImportPo {

  /** 结算编号 */
  @ExcelProperty("结算编号")
  private String fid;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String sidShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String sid;

  /** 店铺名称 */
  @ExcelProperty("店铺名称")
  @Size(max = 128, message = "店铺名称长度不能超过128")
  private String storeName;

  /** 国家 */
  @ExcelProperty("国家")
  @Size(max = 200, message = "国家长度不能超过200")
  private String countryCodeCountry;

  @ExcelIgnore
  @Schema(title = "国家")
  private String countryCode;

  /** 国家code */
  @ExcelProperty("国家code")
  @Size(max = 50, message = "国家code长度不能超过50")
  private String customerCountryCode;

  /** 亚马逊账号id */
  @ExcelProperty("亚马逊账号id")
  @Size(max = 50, message = "亚马逊账号id长度不能超过50")
  private String sellerId;

  /** 报告类型 */
  @ExcelProperty("报告类型")
  @Size(max = 50, message = "报告类型长度不能超过50")
  private String reportType;

  /** 结算状态 */
  @ExcelProperty("结算状态")
  private String processingStatus;

  /** 转账状态 */
  @ExcelProperty("转账状态")
  private String fundTransferStatus;

  /** 对账结果 */
  @ExcelProperty("对账结果")
  private String reconciliationResults;

  /** 对账结果内容 */
  @ExcelProperty("对账结果内容")
  @Size(max = 1024, message = "对账结果内容长度不能超过1024")
  private String reconciliationResultsBody;

  /** 应收币种 */
  @ExcelProperty("应收币种")
  private String originalTotalCurrencyCode;

  /** 转账币种 */
  @ExcelProperty("转账币种")
  private String convertedTotalCurrencyCode;

  /** 转账金额 */
  @ExcelProperty("转账金额")
  @DecimalString(
    message = "转账金额小数格式不正确",
    label = "转账金额",
    prefix = "￥ "
  )
  private String convertedTotal;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 500, message = "备注长度不能超过500")
  private String comment;

  /** 结算开始时间 */
  @ExcelProperty("结算开始时间")
  @DateTimeString(message = "结算开始时间不是有效的时间日期格式")
  private String settlementStartDate;

  /** 结算结束时间 */
  @ExcelProperty("结算结束时间")
  @DateTimeString(message = "结算结束时间不是有效的时间日期格式")
  private String settlementEndDate;

  /** 转账日期 */
  @ExcelProperty("转账日期")
  @DateTimeString(message = "转账日期不是有效的时间日期格式")
  private String fundTransferDate;

  /** 转账日期-当地 */
  @ExcelProperty("转账日期-当地")
  @DateTimeString(message = "转账日期-当地不是有效的时间日期格式")
  private String fundTransferDateLocale;

  /** Settlement ID */
  @ExcelProperty("Settlement ID")
  @Size(max = 50, message = "Settlement ID长度不能超过50")
  private String settlementId;

  /** 银行尾号 */
  @ExcelProperty("银行尾号")
  @Size(max = 50, message = "银行尾号长度不能超过50")
  private String accountTail;

  /** 追踪编号 */
  @ExcelProperty("追踪编号")
  @Size(max = 50, message = "追踪编号长度不能超过50")
  private String traceId;

  /** 财务组id */
  @ExcelProperty("财务组id")
  @Size(max = 128, message = "财务组id长度不能超过128")
  private String financialEventGroupId;

  /** 到账状态 */
  @ExcelProperty("到账状态")
  private String fundTransferGetStatus;

  /** bucket */
  @ExcelProperty("bucket")
  @Size(max = 50, message = "bucket长度不能超过50")
  private String bucket;

  /** s3FileKey */
  @ExcelProperty("s3FileKey")
  @Size(max = 50, message = "s3FileKey长度不能超过50")
  private String s3FileKey;

  /** 应收币种符号 */
  @ExcelProperty("应收币种符号")
  @Size(max = 50, message = "应收币种符号长度不能超过50")
  private String originCurrencyIcon;

  /** 转账币种符号 */
  @ExcelProperty("转账币种符号")
  @Size(max = 50, message = "转账币种符号长度不能超过50")
  private String convertCurrencyIcon;

  /** 回款率 */
  @ExcelProperty("回款率")
  @DecimalString(
    message = "回款率小数格式不正确",
    label = "回款率",
    suffix = "%"
  )
  private String collectionRate;

  /** 收入 */
  @ExcelProperty("收入")
  @DecimalString(message = "收入小数格式不正确", label = "收入")
  private String sale;

  /** 产品销售 */
  @ExcelProperty("产品销售")
  @DecimalString(message = "产品销售小数格式不正确", label = "产品销售")
  private String saleProduct;

  /** 买家运费 */
  @ExcelProperty("买家运费")
  @DecimalString(message = "买家运费小数格式不正确", label = "买家运费")
  private String saleFreight;

  /** 包装 */
  @ExcelProperty("包装")
  @DecimalString(message = "包装小数格式不正确", label = "包装")
  private String salePacking;

  /** 其他 */
  @ExcelProperty("其他")
  @DecimalString(message = "其他小数格式不正确", label = "其他")
  private String saleOther;

  /** 税 */
  @ExcelProperty("税")
  @DecimalString(message = "税小数格式不正确", label = "税")
  private String saleTax;

  /** 应收金额 */
  @ExcelProperty("应收金额")
  @DecimalString(message = "应收金额小数格式不正确", label = "应收金额")
  private String transferConvertedTotalCurrencyAmount;

  /** 期初余额 */
  @ExcelProperty("期初余额")
  @DecimalString(message = "期初余额小数格式不正确", label = "期初余额")
  private String transferBeginningBalanceCurrencyAmount;

  /** 本期结算 */
  @ExcelProperty("本期结算")
  @DecimalString(message = "本期结算小数格式不正确", label = "本期结算")
  private String transferOriginalTotalCurrencyAmount;

  /** 预留退回 */
  @ExcelProperty("预留退回")
  @DecimalString(message = "预留退回小数格式不正确", label = "预留退回")
  private String transferPreviousReserveAmount;

  /** 本期预留 */
  @ExcelProperty("本期预留")
  @DecimalString(message = "本期预留小数格式不正确", label = "本期预留")
  private String transferCurrentReserveAmount;

  /** 信用卡扣款 */
  @ExcelProperty("信用卡扣款")
  @DecimalString(message = "信用卡扣款小数格式不正确", label = "信用卡扣款")
  private String transferCreditCardDeduction;

  /** 退款 */
  @ExcelProperty("退款")
  @DecimalString(message = "退款小数格式不正确", label = "退款")
  private String refund;

  /** 收入退款 */
  @ExcelProperty("收入退款")
  @DecimalString(message = "收入退款小数格式不正确", label = "收入退款")
  private String refundSaleRefund;

  /** 费用退款 */
  @ExcelProperty("费用退款")
  @DecimalString(message = "费用退款小数格式不正确", label = "费用退款")
  private String refundFeeRefund;

  /** 税退款 */
  @ExcelProperty("税退款")
  @DecimalString(message = "税退款小数格式不正确", label = "税退款")
  private String refundTax;

  /** 支出 */
  @ExcelProperty("支出")
  @DecimalString(message = "支出小数格式不正确", label = "支出")
  private String pay;

  /** 仓储费用 */
  @ExcelProperty("仓储费用")
  @DecimalString(message = "仓储费用小数格式不正确", label = "仓储费用")
  private String payStorage;

  /** 亚马逊费用 */
  @ExcelProperty("亚马逊费用")
  @DecimalString(message = "亚马逊费用小数格式不正确", label = "亚马逊费用")
  private String payAmazon;

  /** 广告费 */
  @ExcelProperty("广告费")
  @DecimalString(message = "广告费小数格式不正确", label = "广告费")
  private String payAd;

  /** 促销费 */
  @ExcelProperty("促销费")
  @DecimalString(message = "促销费小数格式不正确", label = "促销费")
  private String payPromotion;

  /** 其他 */
  @ExcelProperty("其他")
  @DecimalString(message = "其他小数格式不正确", label = "其他")
  private String payOther;
}
